Distributed call server supporting communication sessions in a communication system and method

ABSTRACT

An apparatus, method, and computer program manage communication sessions that include a plurality of portions. Different processors handle each portion of a communication session. The apparatus, method, and computer program transfer the communication session from one of the processors to another of the processors during the different portions of the communication session.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a divisional of U.S. patent application Ser. No.12/824,034 filed on Jun. 25, 2010, which claims priority to U.S. patentapplication Ser. No. 10/610,511 filed on Jun. 30, 2003, now U.S. Pat.No. 7,765,302, which is related to U.S. patent application Ser. No.10/610,373 entitled “APPARATUS, METHOD, AND COMPUTER PROGRAM FORMANAGING RESOURCES IN A COMMUNICATION SYSTEM” filed on Jun. 30, 2003,and U.S. patent application Ser. No. 10/610,508 entitled “APPARATUS,METHOD, AND COMPUTER PROGRAM FOR PROCESSING AUDIO INFORMATION IN ACOMMUNICATION SYSTEM” filed on Jun. 30, 2003, and which are incorporatedherein by reference.

TECHNICAL FIELD

This disclosure relates generally to communication systems and morespecifically to a distributed call server supporting communicationsessions in a communication system and method.

BACKGROUND

Conventional communication systems often include one or more callservers, which are used to establish and support communication sessionsin the systems. For example, a typical call server could receiverequests to initiate telephone calls or conference calls. The serverthen establishes one or more connections or channels used to transportaudio or video information during the calls. A problem with conventionalcall servers is that they typically handle different types of callssimilarly. This often makes it difficult to handle each type of call ina more efficient manner.

SUMMARY

This disclosure provides a distributed call server supportingcommunication sessions in a communication system and method.

In one aspect, an apparatus for supporting a communication sessionincludes a plurality of processors. Each processor is operable toperform at least one function in support of a communication sessionportion of a communication session. The apparatus also includes acontroller operable to transfer the communication session from one ofthe processors associated with a first portion of the communicationsession to another of the processors associated with a second portion ofthe communication session. The controller associates a distinct networkaddress with each of the communication session portions.

In another aspect, a method for supporting a communication sessionincludes establishing a communication session using one of a pluralityof processors. The communication session includes a plurality ofportions, and the processors are operable to perform at least onefunction in support of different portions of the communication session.The method also includes detecting a transition from one of the portionsof the communication session to another of the portions of thecommunication session. The method further includes transferring thecommunication session from one of the processors associated with oneportion of the communication session to another of the processorsassociated with another portion of the communication session. A distinctnetwork address is associated with each of the communication sessionportions.

In yet another aspect, an apparatus for supporting communicationsessions includes a plurality of processors. Each processor is operableto perform at least one function in support of a communication session.The apparatus also includes a first controller operable to transfer thecommunication session from one of the processors to another of theprocessors during different portions of the communication session. Thefirst controller is also operable to transmit first messages to a secondcontroller and receive second messages from a third controller. Thefirst and second messages associated with communication sessions handledby the controllers. The first messages include at least one of one ormore messages generated by the first controller and one or more of thesecond messages.

Other technical features may be readily apparent to one skilled in theart from the following figures, descriptions, and claims.

BRIEF DESCRIPTION OF THE DRAWINGS

For a more complete understanding of this disclosure, reference is nowmade to the following description, taken in conjunction with theaccompanying drawings, in which:

FIG. 1 illustrates an example communication system according to oneembodiment of this disclosure;

FIG. 2 illustrates an example Media Application Server according to oneembodiment of this disclosure;

FIG. 3 illustrates example signaling messages used by the MediaApplication Server according to one embodiment of this disclosure;

FIG. 4 illustrates an example arrangement of multiple Media ApplicationServers according to one embodiment of this disclosure;

FIG. 5 illustrates an example method for providing communicationservices in a communication system according to one embodiment of thisdisclosure;

FIGS. 6-8 illustrate example methods for processing audio information ofa communication session according to one embodiment of this disclosure;and

FIGS. 9-11 illustrate an example method for managing resources in acommunication system according to one embodiment of this disclosure.

DETAILED DESCRIPTION

FIG. 1 illustrates an example communication system 100 according to oneembodiment of this disclosure. The system 100 shown in FIG. 1 is forillustration only. Other embodiments of the system 100 may be usedwithout departing from the scope of this disclosure.

In the illustrated example, the system 100 includes one or morecommunication devices 102 a-102 c, a network 104, and a mediaapplication server (“MAS”) 106.

The communication devices 102 a-102 c represent devices used by users orsubscribers during communication sessions, or data conversions orconversations between devices or applications over a network. Forexample, each communication device 102 represents an input/output devicethat could include a microphone and a speaker to capture and play audioinformation. A communication device 102 could also include a camera anda display to capture and play video information.

During a communication session, the devices 102 communicate with the MAS106 over the network 104. As an example, the communication devices 102may transmit audio information to the MAS 106 and receive audioinformation from the MAS 106. As will be appreciated, each communicationdevice 102 may be constructed or configured from any suitable hardware,software, firmware, or combination thereof for transmitting or receivingaudio or video information.

The system 100 shown in FIG. 1 illustrates various embodiments of thecommunication devices 102. For example, the communication device 102 arepresents a wireless mobile station that communicates with the network104 through a mobile switching center (“MSC”) 108. The communicationdevice 102 b represents a wired Internet Protocol (“IP”) telephone thatcommunicates directly with the network 104. An example of a suitabledevice is an i2004 Internet Telephone, commercially available fromNortel Networks, of Brampton, Ontario, Canada. The communication device102 c represents a personal computer. This represents three embodimentsof the communication devices 102, and other or additional communicationdevices 102 may be utilized in the system 100 of FIG. 1. By way ofillustration in FIG. 1, each of the communication devices 102 a-102 c isdifferent. It will be understood, however, that the communicationdevices 102 in the system 100 may include or represent the same orsimilar type of device or other combination of communication devices.

The network 104 is coupled to the communication devices 102, the MAS106, and the mobile switching center 108. In this document, the term“couple” refers to any direct or indirect communication between two ormore components, whether or not those components are in physical contactwith each other.

The network 104 facilitates communication between components of thesystem 100. For example, the network 104 may communicate InternetPackets (“IP”), frame relay frames, Asynchronous Transfer Mode (“ATM”)cells, Ethernet, X.25, frame relay, or other suitable informationprotocols between network addresses or devices. The network 104 mayinclude one or more local area networks (“LANs”), metropolitan areanetworks (“MANs”), wide area networks (“WANs”), all or portions of aglobal network such as the Internet, or any other communication systemor systems at one or more locations.

The media application server (“MAS”) 106 is coupled to the network 104.The MAS 106 supports communication sessions between communicationdevices 102 in the system 100. For example, the MAS 106 may receive fromone or multiple communication devices 102 requests to establish or joina conference call. The MAS 106 may also transmit/receive audio or videoinformation to/from each communication device 102 and communicateinformation to the other communication devices 102 involved in theconference call. The MAS 106 may be constructed or configured using anyhardware, software, firmware, or combination thereof for supportingcommunication sessions in the system 100. As an example, the MAS 106could include one or more processors 110 that execute instructions andone or more memories 112 that store instructions and data used by theprocessors 110. An example MAS 106 is shown in FIG. 2, which isdescribed below. The microprocessor(s) 110 is generally understood to bea device that drives a general-purpose computer. It is noted, however,that other processor devices, such as microcontrollers or ASICs, can beused as well and achieve the benefits and advantages described herein.

Communication session(s) established and managed by the MAS 106 caninclude additional communication devices other than the communicationdevices 102 a-102 c. For example, a communication device 102 d is showncoupled to the network 104 through a public telephone network, such as apublic switched telephone network (“PSTN”) 114. The communication device102 d may include a conventional analog or digital telephone or someother type of communication device. In an embodiment where the PSTN 114and the network 104 use different or incompatible protocols tocommunicate, a gateway 116 may be used that is coupled to the network104 and the PSTN 114 to facilitate communication between the networks.The gateway 116 functions to translate between the different protocolsused by the network 104 and the PSTN 114. Although one PSTN 114 is shownin FIG. 1 coupled to the network 104, other or additional types ofpublic or private networks may be coupled to the network 104.

The communication devices 102 and the MAS 106 could support suitablestandards or protocols used to set up, maintain, and terminatecommunication sessions between end users. As examples, the communicationdevices 102 and the MAS 106 could communicate audio, video, or otherinformation in the Realtime Transfer Protocol (“RTP”) over User DatagramProtocol (“UDP”) and the International TelecommunicationUnion—Telecommunications (“ITU-T”) H.263 standard (video CODECs) andother standards or protocols such as the G.711 and G.729 audio CODECstandards. Other CODECs, such as Moving Picture Experts Group-4(“MPEG-4”), Digital Video Express (“DIVX”), and Windows Media Video(“WMV”), can be supported by the MAS 106. In addition, signalingmessages sent between the communication devices 102 and the MAS 106 mayinclude or conform with the Session Initiation Protocol (“SIP”), whichis an application layer protocol for the establishment, modification,and termination of conferencing and telephony sessions over an IP-basednetworks. As will be appreciated, additional protocols andconfigurations may be used.

In one aspect of operation, the MAS 106 includes one or more processes,such as software applications providing an activity, a function, or asystematic sequence of operations that produces a specified result, forhandling conference calls and one or more processes for handlingnon-conference calls. In this document, the phrase “conference call”refers to a communication session involving more than two participants,and the phrase “non-conference call” refers to a communication sessioninvolving two participants. By providing different processes to handledifferent types of calls, each type of call can be handled in a moreefficient manner.

Moreover, a communication session may include different portions, whereeach portion is associated with a function performed by a differentprocess. The MAS 106 includes logic operable to detect the differentportions and to transfer a communication session to the appropriateprocess. As a particular example, a communication session could includeone portion where the session is a conference call and another portionwhere the session is a non-conference call. The MAS 106, through programlogic, detects when a non-conference call becomes a conference call andwhen a conference call becomes a non-conference call; Upon detection ofa change, the MAS 106 takes suitable action, such as transferring thecalls to the appropriate processes, as when one party in a two-way(non-conference) telephone call invokes a three-way calling feature (tobecome a conference call). Similarly, a conference call can become anon-conference call, such as when everyone except two participants exitsa conference call.

In another aspect of operation, the MAS 106 monitors and manages theresources available to handle communication sessions. Upon request for acommunication session, the MAS 106 determines the resources availablefor the communication session. If sufficient resources are determined tobe unavailable, the MAS 106 may reject the communication session. Aspart of this determination, the MAS 106 monitors its operatingconditions, such as the apportionment and availability of memory, taskorder, management of information in and out of the CPU, and the like,and utilizes such factors in the determination. As an example, if arapid series of short communication sessions are being established, thisgenerally consumes a large amount of resources, even though the sessionsare short. The MAS 106 can take this into account and reject subsequentcommunication sessions that could have been accepted under differentcircumstances.

In yet another aspect of operation, the MAS 106 is configured toincrease audio information processing efficiency. For example, the MAS106 can pre-process audio information, such as pre-recordedannouncements and prompts, using different coder-decoders (“CODECs”),which convert voice signals from analog to digital signals sufficientfor digital PBXs and digital transmission systems, that are thenconverted back to analog for the end user. There are varying types ofCODECs, such as G.711 and G.729 CODECs. When the processed audioinformation is needed, the MAS 106 can retrieve the appropriatedigitized audio information from storage and stream the informationwithout needing to process the audio information into analog form, andthen back to digitized form, before transmission. Additionally, the MAS106 may monitor the CODEC format used by the participants in acommunication session and to reduce or minimize the amount of processingneeded for the audio information exchange. In this way, the MAS 106reduces the processing load, which helps provide an increasedcommunication session capacity.

Additional features of the Media Application Server 106 are describedbelow. It should be noted that particular embodiments of the MediaApplication Server 106 need not include each and every feature describedin this document. For example, one embodiment of the Media ApplicationServer 106 may include multiple processes for handling conference andnon-conference calls as described above but deploy other audioinformation processes. As a further example, the Media ApplicationServer 106 could be devoted to implement the resource managementfunctionality described above, but not the multiple processes forhandling calls described above.

Although FIG. 1 illustrates one example of a communication system 100,various changes may be made to FIG. 1. For example, varyingcommunication devices 102, networks 104, and servers 106 could be usedin the system 100. Also, the functionality described above as beingimplemented on a MAS 106 could be implemented on any other computingdevice, such as a desktop computer or a laptop computer. In addition,FIG. 1 illustrates one operational environment in which the variousfeatures of the MAS 106 may be used. These features could be implementedin any other suitable operating environment.

FIG. 2 illustrates the Media Application Server 106 according to oneembodiment of this disclosure. Other embodiments or configurations ofthe MAS 106 may be used without departing from the scope of thisdisclosure. Also, while FIG. 2 illustrates the MAS 106 operating in thesystem 100 of FIG. 1, the MAS 106 could operate in other suitablesystems.

In the illustrated example, the MAS 106 includes a media conductor 202,a media controller 204, two media processors 206 a-206 b, and a contentstore 208. The media conductor 202 processes signaling messages receivedby the MAS 106. The signaling messages could represent any suitablesignaling messages, such as requests to establish a communicationsession or to invoke features like call forwarding and three-waycalling. The media conductor 202 processes the signaling messages andcommunicates the processed messages to the media controller 204.

In some embodiments, the communication devices 102 communicate thesignaling messages directly (or via a gateway, which serves as anentrance/exit into a communications network) to the MAS 106. In otherembodiments, the communication devices 102 communicate signalingmessages indirectly to the MAS 106, such as when a Session InitiationProtocol (“SIP”) application server 210 (that received a request from adevice 102) sends the signaling messages to the media conductor 202 onbehalf of the communication device 102. The communication devices 102may communicate directly with the SIP application server 210 orindirectly through a gateway, such as gateway 118.

The media conductor 202 may also implement SIP call control, parameterencoding, and media event package functionality. Additionalfunctionalities provided by the media conductor 202 include providing astatic network presence from which services may be deployed, acting as aSIP service portal, enforcing partitioned service resource assignments,supporting centralized management and throttling of traffic for multipleservices, monitoring the health of the media controllers 204, andsupporting service discrimination by allowing one or multiplecontrollers 204 to identify their supported services duringregistration. In particular embodiments, one or multiple conductors 202may be used in the MAS 106. The media conductors 202 in the MAS 106 maybe scalable independent of the execution environment and the resourcesused in the MAS 106.

The media controller 204 manages the operation of the MAS 106 to provideservices to the communication devices 102. For example, the mediacontroller 204 may receive processed SIP requests from the mediaconductor 202, where the requests involve conference or non-conferencecalls. The media controller 204 may then select the media processor 206to handle each of the calls, perform audio/video capabilitynegotiations, enforce licenses controlling how the MAS 106 can be used,and control negotiations based on the licenses. The term “processor” asused with respect to the media processor 206, means a softwareapplication for specific media processing, such as IVR media orconference media, which is executed on the MAS 106 hardware platform viathe operating system. The negotiations may include identifying the CODECto be used to encode and decode audio or video information during acall.

In some embodiments, the media controller 204 executes scripts, a formof program with a set of instructions to an application or utilityprogram, and includes interpreters that process, for example, NortelFSM, TCL, VoiceXML, and SALT scripts. The media controller 204 furthermonitors the capabilities and resources used by the media processors206, facilitates real-time domain based resource assignments, andsupports the auto-discovery of the media processors 206. In addition,the media controller 204 monitors the media processors 206 forreliability and fail-over purposes and supports the use of overflowports during high-traffic periods. In particular embodiments, multiplecontrollers 204 are used in the MAS 106, and each registers its serviceswith the media conductor 202 so that the media conductor 202 can performservice discrimination.

The media processors 206 a-206 b handle the exchange of audio or videoinformation between communication devices 102 involved in a conferenceor non-conference call. For example, a media processor 206 receivesaudio and video information from one communication device 102 involvedin a call, processes the information as needed, and forwards theinformation to at least one other communication device 102 involved inthe call. The audio and video information is received through one ormore ports 214, which couple the media processors 206 to the network104. The ports 214 may be constructed or configured from any suitablestructure operable to facilitate communication between the MAS 106 andthe network 104. In some embodiments, each media processor 206 isassociated with a unique set of ports 214. Each port 214 may beassociated with a unique network address in the system 100, where thenetwork address identifies the MAS 106 and the port 214 being assignedto a communication device 102.

In particular embodiments, the media processors 206 provide anorigination and termination point for Realtime Transfer Protocol(“RTP”)/Realtime Transfer Control Protocol (“RTCP”) audio and videostreams. The media processors 206 also support any suitable CODEC orCODECs used to process audio and video information, including the G.711(ulaw and alaw), G.726, G.723, G.729A, Linear Pulse Code Modulation(“LPCM”) 16, and LPCM 8 CODECs. One or more of the media processors 206further support the Internet Engineering Task Force (“IETF”) Request ForComment (“RFC”) 2833 standard for the transport of dual-tonemulti-frequency (“DTMF”) signals over RTP connections. In thisembodiment, the MAS 106 need not decompress actual audio informationreceived from the communication devices 102 to identify the DTMF signalssince the DTMF signals are sent as out-of-band messages. In addition,the media processors 206 support real-time transcoding and two-phasecaching (disk caching and memory caching). The media processors 206stream information from the disk cache or memory cache, as well assupporting real-time video streaming for MPEG-4 and H.263 and withconstant or variable frame rates.

The media processors 206 may support multiple network interfaces forsignaling/management and streaming, which may help to ensure aparticular quality of service for communications. The media processors206 may also use a shared pool of speech recognition, text-to-speech(“TTS”), or other resources. In some embodiments, no bearer redirectionis needed for the media processors 206 to utilize network resources. Themedia processors 206 may have generic play, record, and conferencingcapabilities for fully synchronized audio and video information. Digitcollection occurs using any suitable technique, including IETF RFC 2833,standard tones, and SIP signaling. Varying techniques may be used toretrieve pre-recorded or recorded files, such as voice mail or audioprompts. These mechanisms include the Hypertext Transfer Protocol(“HTTP”), the File Transfer Protocol (“FTP”), the Trivial File TransferProtocol (“TFTP”), and the Simple Mail Transfer Protocol (“SMTP”).Direct streaming is supported using HTTP.

In the illustrated embodiment, each media processor 206 providesdifferent functionality in the MAS 106. For example, the media processor206 a handles two-party communication sessions and provides interactivevoice response (“IVR”) functionality in the MAS 106. As particularexamples, the media processor 206 a supports a voice mail function thatcan record and play messages or an auto-attendant function that providesa menu and directs callers to particular destinations based on theirselections. The media processor 206 b provides conferencingfunctionality in the MAS 106, such as by facilitating the exchange ofaudio and video information between communication devices 102 involvedin a conference call. In particular embodiments, the IVR media processor206 a translates requests to recite numbers, digits, dates, times, ormonetary values in specific currencies by using the InternationalOrganization for Standardization ISO 3166 country codes and ISO 639language codes, namespaces, and domains. Supported audio files mayinclude “raw” extension identified files, Waveform Audio (“WAV”) files,Audio Video Interleave (“AVI”) files, or any other suitable file type ortypes.

The content store 208 provides access to content used by the variouscomponents of the system 100. For example, the content store 208provides access to stored voice mail messages and access codes used toinitiate or join conference calls. The content store 208 may provideaccess to any other or additional information. In some embodiments, thecontent store 208 includes an interface to query, ingest, and managecontent, as well as a data retrieval mechanism to retrieve content usingany suitable protocol. One or more content stores 208 may share a commondisk array or storage area network (“SAN”). The content store 208 isconfigured to use internal disks, external disks, an external RedundantArray of Independent Disks (“RAID”) or SAN, or other storage andretrieval device or devices.

In particular embodiments, the content store 208 is cataloged in alogical namespace, which in turn contains unique mailboxes. The contentis grouped and queried based upon content store attributes or customattributes. Uniform Resource Locators (“URLs”) to access the content arequeried in real-time, and contents are retrieved from the content store208 in real-time when needed. Platform mailboxes may be used todistribute content. Also, in particular embodiments, multiple servers106 are used in the system 100, and two of the servers 106 includes acontent store 208. In these embodiments, one content store 208 acts as abackup for the other content store 208. In particular embodiments, bothcontent stores 208 (including the backup) are active. A MAS 106 that iswithout a content store 208 can use the content store 208 of another MAS106. In other embodiments, the content store 208 is replaced by aconventional database or other data storage facility.

A Java 2 Enterprise Edition (“J2EE”) platform 216 is coupled to the MAS106. The J2EE platform 216 allows the MAS 106 to retrieve informationused to provide subscriber services over the system 100. For example,the J2EE platform 216 may provide audio announcements used by the IVRmedia processor 206 a. The J2EE platform 216 represents one possibleapparatus used to provide audio or other information to the MAS 106. Anyother or additional device or apparatus may be used to provide theinformation to the MAS 106.

In particular embodiments, the various components of the MAS 106represent software processes executed by the one or more processors 206of the MAS 106. This allows, for example, the MAS 106 to be scaled bysimply increasing or decreasing the number of software processes beingexecuted. Also, the various processes communicate with each other usingany suitable protocol, such as the Transmission Control Protocol(“TCP”). In addition, the various processes have any suitable priorityin the MAS 106. As an example, in order of decreasing priority, themedia processors 206 are designated with a real-time priority, the mediacontroller 204 is designated with a high priority, and the mediaconductor 202 and content store 208 are designated with a regularpriority.

Although FIG. 2 illustrates one example of a Media Application Server106, various changes may be made to FIG. 2 while maintaining theadvantages and functionality recited herein. For example, any number ofconductors 202, controllers 204, media processors 206, and contentstores 208 may be used in the MAS 106. Also, the functional divisionsshown in FIG. 2 are for illustration only. Various components can becombined or omitted or additional components can be added according toparticular functional designations or needs. In addition, while thecomponents 202-208 have been described as being executed by a MAS 106,the components 202-208 may be executed by other hardware platforms, forexample, such as a desktop computer.

FIG. 3 illustrates example signaling messages 300 deployed through theMedia Application Server 106 according to one embodiment of thisdisclosure. The signaling messages 300 may, for example, representmessages supported by the SIP protocol. Other or additional types ofsignaling message handling may be implemented through the MAS 106without departing from the scope of this disclosure. Also, the signalingmessages 300 may be described as establishing and maintaining atelephone call. Other or additional messages may be used to establishand maintain other types of communication sessions.

Referring to FIG. 3, a communication device 102 b initiates theestablishment of a non-conference communication session by transmittingan invite message 302 to the MAS 106. The invite message 302 informs theMAS 106 that the communication device 102 b seeks to establish acommunication session.

The MAS 106 communicates a trying message 304 in response to the invitemessage 302 of the communication device 102 b. The trying message 304conveys information that the MAS 106 received the invite message 302 andis attempting to establish a connection to a called destination. If andwhen the MAS 106 contacts and begins ringing the called destination, theMAS 106 communicates a ringing message 306 back to the calling number,or in this instance the communication device 102 b. The ringing message306 conveys that the destination is being ringed. In some embodiments,this also causes the communication device 102 b to generate a ring toneso that a user of the communication device 102 b can hear that thedestination is being ringed.

If a user answers the called destination, the MAS 106 communicatesanother invite message 308 to the communication device 102 b. In theillustrated example, the invite message 308 represents a SessionDescription Protocol (“SDP”) message, which conveys to the communicationdevice 102 b that the call has been answered at the destination. Theinvite message 308 also conveys to the communication device 102 binformation regarding the CODEC-type and port 214 allocated for thecommunication device 102 b. The communication device 102 b then sends anacknowledgement (“ACK”) message 310 to the MAS 106, confirming that theinvite message 308 was received at the communication device 102 b. Atthis point, traffic is exchanged between the communication device 102 band the destination over a bearer channel.

At some point, this non-conference call session becomes a conferencesession. For example, either the communication device 102 b or thecalled destination may invoke a three-way calling feature, whichconverts the two-way call into a three-way conference call. As describedabove, one media processor 206 a handles non-conference calls, while adifferent media processor 206 b handles conference calls. As a result,when a non-conference session becomes a conference session, the MAS 106transfers the call from the first media processor 206 a to the secondmedia processor 206 b.

To accomplish this, the MAS 106 communicates an invite message 312 tothe communication device 102 b. This invite message 312 places thecommunication device 102 on hold. The communication device 102 bresponds with an acknowledgement message 314, which informs the MAS 106that the communication device 102 b received the invite message 312. TheMAS 106 then sends another invite message 316 to the communicationdevice 102 b. This invite message 316 informs the communication device102 b of a new port 214 assigned to be used by the communication device102 b. As an example, this transfers the non-conference communicationsession from a port 214 used by the media processor 206 a to a port 214administered by the second media processor 206 b. The communicationdevice 102 b then transmits an acknowledgement message 318 to the MAS106, which confirms that the communication device 102 b has received theinvite message 316 and can use the new port 214. At this point, thecommunication device 102 b communicates audio and video information tothe new port 214 of the MAS 106 over a bearer channel.

Although FIG. 3 illustrates one example of the signaling messages 300used by the Media Application Server MAS 106, various changes may bemade while maintaining the advantages and features as shown in FIG. 3.For example, other or additional communication protocols may besupported by the MAS 106 and the communication device 102 b. Also, thisdescription has described the transformation of a non-conferencecommunication session into a conference session. The same or similarmessages may be used to establish a conference communication session andtransform the session into a non-conference session. In addition, anyother or additional messages may be used to invoke supplemental featureslike call forwarding or to perform other functions before, during, orafter a call.

FIG. 4 illustrates an example arrangement 400 of multiple MediaApplication Servers 106 according to one embodiment of this disclosuredeploying a distributed architecture. In this example, multiple MediaApplication Servers 106 a-106 d are used in the system 100 of FIG. 1,and each of the Media Application Servers 106 communicate with oneanother to provide subscriber feature and services through thecommunication devices 102.

As shown in FIG. 4, the Media Application Servers 106 are configured ina ring arrangement. In this example, each MAS 106 receives informationfrom only one other MAS 106 and transmits information to only one otherMAS 106. In some embodiments, the media controller 204 in each MAS 106generates and communicates messages for other Media Application Servers106 over the ring. When a particular MAS 106 receives a message, theassociated media controller 204 determines whether the message is meantfor that MAS 106. If not, the message is forwarded to the next MAS 106in the ring. A media controller 204 removes, or takes possession of, amessage from the ring by not transmitting the message to the next MAS106 in the ring. This may occur, for example, when the message is meantonly for that MAS 106 or when the MAS 106 that originally sends amessage receives the same message over the ring.

In this example, to facilitate communication between the MediaApplication Servers 106, each MAS 106 includes at least one primaryforward address 402 and at least one backup forward address 404. Foreach MAS 106, the primary forward address 402 represents the networkaddress of the next MAS 106 in the ring. Each MAS 106 transmitsinformation to the next MAS 106 identified by the primary forwardaddress 402 and receives information from the previous MAS 106 in thering.

In the illustrated example, a MAS 106 may fail or otherwise be unable tocommunicate with another MAS 106 in the arrangement 400. For example, aMAS 106 b could lose power or suffer an equipment failure. As anotherexample, a communication link between two servers 106 a and 106 b may besevered or otherwise disrupted.

When this or other problems occur, one or more of the remaining servers106 are reconfigured to route information around the out-of-service MAS106. In each MAS 106, when communication with the MAS 106 identified bythe primary forward address 402 fails, a backup forward address 404 isused to communicate with another MAS 106 in the ring. For example, thebackup forward address 404 could identify the MAS 106 that lies ahead ofthe MAS 106 identified by the primary forward address 402. As a result,the ring is modified so that messages flow around, or circumvent, theout-of-service MAS 106 b. If and when the out-of-service MAS 106 b orcommunication link becomes operational or is re-established, the MAS 106b uses one or more of its addresses 402, 404 to reestablishcommunication and reinsert itself into the ring.

In this way, the servers 106 are easily configured and reconfigured tooperate in the system 100. For example, each MAS 106 need not beconfigured to simultaneously communicate with all other servers 106.Also, newly introduced Media Application Servers 106 are more readilyadded to the arrangement 400. As an example, an additional MAS 106 b maybe added to the arrangement 400 by changing the primary forward address402 in the previous MAS 106 a.

The ability of the Media Application Servers 106 to communicate isuseful in supporting various functions in the communication system 100.For example, the ability of the communication system 100 to supportconference calls may depend on the ability of the Media ApplicationServers 106 to communicate. As a particular example, the participantswho wish to join a conference call may use communication devices 102that send requests to and that are initially served by different servers106. Because different servers 106 are involved, a single conferencemedia processor 206 b is unable to establish a conference call betweenall participants. To support conference calls, the Media ApplicationServers 106 inform each other when participants to a conference callhave requested service. The servers 106 then transfer some or all of theparticipants to a particular MAS 106, and the particular MAS 106 thenestablishes the conference call with all of the conference callparticipants.

Although FIG. 4 illustrates one example of an arrangement 400 ofmultiple media application servers 106 a-106 d, various changes may bemade to FIG. 4. For example, other suitable arrangements could be usedto facilitate communication between the servers 106. Also, each MAS 106may transmit information to and receive information from any of theother Media Application Servers 106.

FIG. 5 illustrates an example method 500 for providing communicationservices in a communication system. For clarity, the method 500 may bedescribed with respect to the MAS 106 of FIG. 2 operating in the system100 of FIG. 1. The method 500 may also be used by other suitable devicesor in any other suitable system.

A Media Application Server 106 receives a request for a requestedcommunication session or other communication session at step 502. Thismay include, for example, a media conductor 202 receiving one or moreSIP signaling messages indicating that a communication device 102 wishesto initiate a conference or non-conference call. This may also includethe media conductor 202 processing the message and forwarding theprocessed message to the media controller 204.

The MAS 106 determines the type of call being requested at step 504.This may include, for example, service logic mapping a call to aservice. As particular examples, a number may map to a service (such as47472@mas.com) or a request Uniform Resource Indicator (“URI”) may mapto a service (such as meetme@mas.com). The service determines whatresources are needed, and the media controller 204 handles theconnection layer (bearer) and resource allocation and selection.

The MAS 106 then routes the request for the requested communicationsession to the appropriate media processor at step 506. This mayinclude, for example, the media controller 204 routing processedmessages involving conference calls to the media processor 206 b androuting processed messages involving non-conference calls to the mediaprocessor 206 a. At this point, the media processor 206 that receivesthe request establishes and maintains a communication session involvingtwo or more ports 214.

The MAS 106 determines whether the type of call has been changed at step508. This may include, for example, the MAS 106 receiving a request toconvert a non-conference call into a conference call, such as when aparticipant to the two-way call invokes a three-way calling feature.This may also include the MAS 106 detecting that all but twoparticipants to a conference call have left the conference.

If the type of call changes, the MAS 106 transfers the call to theappropriate media processor at step 510. This may include, for example,the MAS 106 causing the communication devices 102 involved in the callto begin using different ports 214 coupled to a different mediaprocessor 206. This may also include the MAS 106 using the signalingmessages shown in FIG. 3 or any other suitable messages. The MAS 106determines whether the call is continuing at step 512. If so, the MAS106 returns to step 508. Otherwise, the method 500 ends.

Although FIG. 5 illustrates one example of a method 500 for providingcommunication services in a communication system, various changes may bemade to FIG. 5. For example, while the method 500 has been described asdetermining whether a call type has changed based on the number ofparticipants involved in the call, other or additional factors could beused to identify the type of call.

FIGS. 6-8 illustrate example methods for processing audio information ofa communication session. The methods may be described with respect tothe MAS 106 of FIG. 2 operating in the system 100 of FIG. 1. The methodsmay also be used by any other suitable devices or in any other suitablesystem.

In FIG. 6, a Media Application Server 106 compresses one or moreannouncements and prompts using one or more CODECs at step 602. Theannouncements and prompts represent any suitable announcements andprompts used in the system 100. For example, the announcements andprompts may include audio announcements and prompts used by the voicemail function, the auto-attendant function, or other IVR functionsupported by the media processor 206 a. The CODEC or CODECs used can bethe G.711 CODEC, the G.729 CODEC, or other or additional CODECs.

The MAS 106 caches the compressed announcements and prompts stored ondisk at step 604. This may include, for example, the MAS 106 storing thecompressed announcements and prompts on a hard drive, compact disk, orother disk storage.

The MAS 106 receives a request for an announcement or prompt at step606. This may include, for example, a media processor 206 receiving orgenerating a request for a particular prompt needed to provide theauto-attendant function to a subscriber. The MAS 106 reads and streamsthe requested announcement or prompt at step 608. This may include, forexample, the MAS 106 retrieving the requested announcement or promptfrom the disk and streaming the announcement or prompt to acommunication device 102. In some embodiments, several versions of theannouncement or prompt exist on the disk, such as where the announcementor prompt has been compressed using different CODECs. The MAS 106identifies the CODEC being used by a communication device 102 and thenretrieves the announcement or prompt compressed using that CODEC.Because the announcement or prompt has already been compressed, the MAS106 need not use processing resources to compress the announcement orprompt each time it is requested, thus gaining processing efficiency inthe process.

The MAS 106 determines whether the requested announcement or prompt hasbeen used above a threshold at step 610. This may include, for example,comparing the number of times that an announcement or prompt has beenrequested in a specified time period to a threshold value. If therequested announcement or prompt has not been used above the threshold,the MAS 106 returns to step 606 to receive and process another requestfor an announcement or prompt.

If the requested announcement or prompt has been used above thethreshold, the MAS 106 retrieves the requested announcement or promptfrom static or disk memory at step 612. The MAS 106 stores theannouncement or prompt in a local memory at step 614. This may include,for example, the MAS 106 storing the retrieved announcement or prompt ina local random access memory. If the announcement or prompt is againrequested, the MAS 106 can packetize the announcement or prompt directlywithout needing to read the announcement or prompt from the disk. Inthis way, the MAS 106 supports two-phase caching of announcements andprompts, the first phase on static or disk memory and the second phasein faster local memory.

By compressing the announcements and prompts using one or more CODECsbefore the announcements and prompts are actually needed, the MAS 106need not compress the announcements and prompts each time they arerequested. This helps to reduce the processing load placed on the MAS106. Also, by caching the announcements and prompts in static or diskmemory and then in a local memory, the MAS 106 can more quickly retrievethe announcements and prompts. This may also help to reduce theprocessing load placed on the MAS 106.

As shown in FIG. 7, the Media Application Server 106 also processes theaudio information received during a communication session differentlybased on the characteristics of the communication session. For example,during a communication session, the MAS 106 determines if one or morechannels of a call are silent at step 702. This may include, forexample, the media processor 206 that handles the call determiningwhether one or more channels are silent. One example of a method foridentifying silent channels is shown in FIG. 8, which is describedbelow.

The MAS 106 also determines whether two non-silent channels areexchanging audio information at step 704. This may include, for example,the media processor 206 determining that the communication session is anon-conference call. This may also include the media processor 206determining whether two participants involved in a conference call arespeaking.

If two non-silent channels are exchanging audio information, the MAS 106determines whether the channels are using the same CODEC to compress theaudio information at step 706. If the same CODEC is used across thechannels, the MAS 106 buffers the audio information at step 708 andexchanges the audio information between the channels at step 710. Inthis case, the MAS 106 does not need to decompress or recompress theaudio information since both channels are using the same CODEC.Otherwise, different CODECs are used by the two channels that areexchanging audio information. The MAS 106 decompresses the audioinformation from each channel at step 712 and recompresses the audioinformation from each channel using a different CODEC at step 714. TheMAS 106 does this so that each channel receives audio informationcompressed using the proper CODEC. The MAS 106 then communicates therecompressed audio information at step 716. As shown in FIG. 7, steps708-710 recognize processing efficiency, and as a result may requireless processing power than steps 712-716 because the MAS 106 avoidsdecompression and recompress (or decode and code) audio informationduring steps 708-710. As a result, a realization in efficiency is takenas an advantage to reduce workload and CPU resources when the MAS 106detects channels using the same CODEC. Instead of or in addition to twonon-silent channels exchanging audio information, the MAS 106 providesone or more streams of audio information from speaking participants toother participants involved in a communication session. This may occur,for example, during a conference call when the audio information fromtwo main participants is provided to the remaining participants. If morethan one participant's audio information is to be provided to otherparticipants, the MAS 106 mixes the audio information from two or morechannels at step 718. This may include, for example, the media processor206 that handles the call mixing the audio information from multiplechannels into a single sequence of packets.

The MAS 106 generates a list of CODECs used by the channels to receivethe mixed audio information at step 720. This may include, for example,the media processor 206 identifying the participants to receive themixed audio information and the CODEC used by each participant. Becausemultiple participants may use a common CODEC, this may also include themedia processor 206 identifying each unique CODEC contained in the listof CODECs.

The MAS 106 compresses the mixed audio information using each uniqueCODEC contained in the list at step 722. This may include, for example,the media processor 206 compressing the mixed audio information witheach unique CODEC, generating one or more versions of the mixed audioinformation.

The MAS 106 communicates the compressed audio information at step 724.This may include, for example, the media processor 206 communicating thesame version of the compressed audio information over multiple channels,where those channels use the same CODEC. By mixing the audio informationonce rather than once for each channel, the load placed on the MAS 106may be reduced. Also, by identifying and using a minimum number ofunique CODECs, the MAS 106 need not repeatedly process the audioinformation using the same CODEC. This may also help to reduce the loadplaced on the MAS 106.

FIG. 8 illustrates an example method for identifying silent channels,which, in general, occurs once a communication session has beenestablished but there is no exchange of audio information over thechannel. In other words, where active conversation or data transmissionis not taking place over a channel, a form of silence suppression isdeployed to recoup that bandwidth otherwise allocated. The MAS 106samples the energy of the audio information being received on eachchannel during a communication session at step 802. For example, eachcommunication device 102 may communicate audio information to the MAS106 over separate channels, and a media processor 206 samples the energyof the audio signals received. The media processor 206 could use anysuitable technique known to those skilled in the art for measuring theenergy level of audio signals received by the MAS 106.

The MAS 106 identifies any channels with low or no energy at step 804.For example, the media processor 206 determines whether the measuredenergy levels exceed a threshold value. In some embodiments, the audioinformation received by the MAS 106 over a channel is compressed using aCODEC. In particular embodiments, the MAS 106 determines whether theaudio information received over the channel has low or no energy withoutdecompressing the audio information. This may be achieved, for example,using the ITU-T G.729AB silence detection or the IETF RFC 3389 silencesuppression.

The MAS 106 removes the identified channels having low or no energy atstep 806. This may include, for example, the media processor 206removing the channels having no or low energy levels. The mediaprocessor 206 need not use any audio information received over thesechannels or provide that audio information to any other participants ina communication session. In this regard, bandwidth efficiencies arerealized in that data representing silent channels need to not beconveyed to parties in a non-conference or conference communicationsession. For example, in a conference communication session having videoand audio capabilities, the audio portion of the silent channels issuppressed. Suppression of the silent channels eliminates background orwhite noise from the conference communication session, improving thequality of the audio portion of the session, while video informationportion of the session continues transmission to those video-capabledevices 102.

The MAS 106 attaches one or more voice activity detectors to theremaining channels at step 808. This may include, for example, the mediaprocessor 206 attaching a voice activity detector to each of theremaining channels. As a particular example, the voice activitydetectors may represent software processes that attempt to detect voicesin incoming audio information.

The MAS 106 records or identifies a noise floor for each of the channelsat step 810. The noise floor for a particular channel represents theaverage noise present in the incoming audio information. As a particularexample, a user of a communication device 102 could be riding in a car,and the engine noise could be recorded by the video client 102 andcommunicated to the MAS 106. This engine noise represents noise thatneed not be provided to other participants in a communication session.In some embodiments, the noise floor is identified by sampling aparticipant's channel at different times. In particular embodiments, theparticipant's channel is sampled both when the participant is speakingand when the participant is not speaking so that the voice detector maydetermine what constitutes noise.

The MAS 106 identifies any channel being used by a speaking party atstep 812. This may include, for example, the media processor 206determining whether the energy level of a channel exceeds the noisefloor for that channel. In this case, the excessive energy may representthe voice of the user who is using a communication device 102. At thispoint, the audio information from the speaking parties may be processedby the MAS 106 as shown in FIG. 7.

Although FIGS. 6-8 illustrate examples of methods for processing audioinformation in a communication system, various changes may be made toFIGS. 6-8. For example, FIG. 6 illustrates that the announcements andprompts are cached in the local memory by comparing the number ofrequests to a threshold. Other characteristics may be used to cache theannouncements and prompts in the local memory. As an example, the mostrequested announcements and prompts may be cached without reference towhether they are used above a threshold level. Also, FIG. 7 illustratesthat the MAS 106 performs either steps 706-716 or steps 718-724 during acommunication session. The MAS 106 may also perform both sets of stepseither at the same time or at different points during the call. Further,the MAS 106 may repeatedly identify whether one or more channels aresilent and need not only perform step 702 once during a call. Inaddition, the MAS 106 could use any other technique to identify silentparticipants in a communication session.

FIGS. 9-11 illustrate an example method for managing resources in acommunication system according to one embodiment of this disclosure. Inparticular, the method shown in FIGS. 9-11 determines whether a newcommunication session should be established in the communication system.The method in FIGS. 9-11 is described with respect to the MAS 106 ofFIG. 2 operating in the system 100 of FIG. 1. The method in FIGS. 9-11could also be used by any other suitable device or in any other suitablesystem.

In FIG. 9, a MAS 106 identifies one or more characteristics of at leastone central processing unit (“CPU”) in the MAS 106 at step 902. This mayinclude, for example, the MAS 106 identifying one or morecharacteristics of at least one CPU 110 in the MAS 106. Thesecharacteristics may include the number of CPUs, the type of CPUs(manufacturer, model, etc.), and the clock speed of the CPUs.

The MAS 106 identifies an available number of media processing units(“MPUs”) associated with the CPUs at step 904. The MPUs represent ameasure of the processing resources provided by the CPUs that arecapable of being used by the media processors 206 or other components inthe MAS 106.

In some embodiments, the number of MPUs is calculated by assigning adefault number of MPUs to different types and speeds of CPUs. Forexample, one number of MPUs may be associated with Intel Xeon CPUsoperating at one clock speed, and another number may be associated withAMD K7 CPUs operating at another clock speed. Also, if multiple CPUs areused in the MAS 106, the default number of MPUs associated with each CPUmay be summed. In other embodiments, the number of MPUs is staticallyassigned to a MAS 106, and the MAS 106 retrieves this value withoutneeding to identify the CPU characteristics at step 902 or identify theMPUs at step 904.

The MAS 106 determines the present communication session load placed onthe MAS 106 at step 906. The load may be expressed in any suitable termsto convey relative loads of the MAS 106, such as by identifying thepercentage of CPU resources currently used by the processes executed bythe MAS 106. This may also include the MAS 106 ignoring any processother than the components 202-208 of the MAS 106. The other processesmay represent utilities or other applications that are executed by theMAS 106 and that have or could be assigned a lower priority than thecomponents 202-208. As a result, the processing resources used by theother processes would not matter since the components 202-208 would begiven priority access to any resources used by the other processes. Insome embodiments, the MAS 106 repeatedly performs this step. In aparticular embodiment, the MAS 106 determines the current process loadevery ten seconds, and the larger of the two previous measurements isused as the current process load.

The MAS 106 determines the “spin rate” of resource allocations at step908. The resource allocation spin rate represents how quickly the MAS106 is processing requests, such as requests for communication sessions.If the spin rate exceeds a threshold, the MAS 106 adjusts the previouslyidentified available MPU value. In this way, the MAS 106 detects, forexample, when a rapid series of short communication sessions are beingestablished. The resources actually used during the rapid series ofcommunication sessions may be small, but the processing resources neededto set up and terminate the communication sessions may be large. Bymonitoring the spin rate, the MAS 106 is able to more accuratelyidentify the amount of resources available for use in the system 100.

The MAS 106 receives a request to establish a communication session atstep 910. This may include, for example, the MAS 106 receiving a SIPrequest from a communication device 102 or the SIP application server210.

The MAS 106 determines whether the requested communication sessionshould be established at step 912. This may include, for example, theMAS 106 using the identified available MPU value and the current processload to determine whether to establish the requested communicationsession. An example method for determining whether a requestedcommunication session should be established is shown in FIG. 10, whichis described below. Based on this determination, the media applicationMAS 106 accepts or rejects the requested communication session at step914.

FIG. 10 illustrates a method 1000 for determining whether to accept orreject a requested communication session. A MAS 106 determines whetherthe present communication session load factor exceeds a threshold atstep 1002. This may include, for example, the MAS 106 comparing thecurrent process load identified at step 906 to a threshold, such asseventy or eighty-five percent. If the current load exceeds thethreshold, the method 1000 ends, and the requested communication sessionis rejected. In this example, the current load placed on the MAS 106 islarge and provides an insufficient MPU to accommodate additionalcommunications sessions. Requests for communication sessions should berejected until additional CPU resources, or MPUs, are available.

Otherwise, the MAS 106 identifies the MPU resources needed for therequested communication session at step 1004. This may include, forexample, the MAS 106 determining whether text-to-speech or speechrecognition resources are needed for the requested communicationsession. The MAS 106 determines the cost of the needed resources interms of MPUs at step 1006. This may include, for example, the MAS 106determining how many MPUs are needed to provide the text-to-speech orspeech recognition resources. An example method for identifying neededresources and identifying a cost of those resources is shown in FIG. 11,which is described below.

The MAS 106 determines whether sufficient MPUs are available to handlethe requested communication session at step 1008. This may include, forexample, determining whether the number of MPUs needed for the requestedcommunication session exceeds the available MPUs previously determined.If the number of MPUs needed for the requested communication sessionexceeds the available MPUs, the method 1000 ends, and the communicationsession is rejected. Otherwise, the MAS 106 reserves the resourcesneeded for the requested communication session at step 1010. The MAS 106also subtracts the number of MPUs needed for the requested communicationsession from the total available MPUs at step 1012. In this way, the MAS106 tracks the amount of processing resources available after therequested communication session has been accepted.

FIG. 11 illustrates an example method 1100 for identifying resourcesneeded for a requested communication session and identifying a cost ofthese resources. A MAS 106 determines the type of CODEC to be usedduring a requested communication session at step 1102. For example, theG.711 CODEC compresses audio information to a lesser extent than theG.729 CODEC. As a result, using the G.711 CODEC consumes fewer resourcesthan a call using the G.729 CODEC. In some embodiments, the exact CODECto be used may be unknown at this point, and the MAS 106 assumes theworst and identifies the CODEC that consumes the greatest quantity ofresources.

The MAS 106 identifies the packet interval to be used during thecommunication session at step 1104. For example, a communication device102 may communicate a packet of audio information to the MAS 106 every10 ms, 20 ms, or 30 ms. Calls using a smaller packet interval involvemore packets being sent to the MAS 106, so these calls are moreresources intensive than calls with longer packet intervals.

The MAS 106 identifies whether a call is a conference call at step 1106.Conference calls typically require the MAS 106 to perform morefunctions, such as the silence detection and audio mixing functionsdescribed above with respect to FIGS. 7 and 8.

The MAS 106 determines how DTMF detection would occur during thecommunication session at step 1108. For example, the DTMF informationmay be sent to the MAS 106 in-band or using the RFC 2833 standard. Thein-band technique requires more resources to extract and process theDTMF information.

The MAS 106 identifies whether a text-to-speech function is needed atstep 1110 and whether speech recognition is needed at step 1112.Communication sessions requiring these functions require greaterresources than calls that do not require these functions.

For each of these identified characteristics of the requestedcommunication session, the MAS 106 determines a number of MPUs neededfor each characteristic at step 1114. This may include, for example, theMAS 106 assigning zero MPUs to the DTMF detection characteristic whenthe RFC 2833 mechanism is used and assigning 0.5 MPUs when in-band DTMFdetection is needed. Any suitable number of MPUs can be assigned to eachof these characteristics. The media application MAS 106 sums theseindividual MPUs to identify the total number of MPUs needed for arequested communication session at step 1116. The total number of MPUsrepresents the estimated resources that are needed to handle therequested communication session.

Although FIGS. 9-11 illustrate an example method for managing resourcesin a communication system, various changes may be made to FIGS. 9-11.For example, in FIG. 9, the present communication session load may becalculated before calculating the available MPUs. Also, in FIG. 10,other techniques can be used to decide whether to accept or reject arequested communication session. In addition, in FIG. 11, any other oradditional characteristics of a call may be used to identify the totalresources needed during the requested communication session.

The Media Application Server 106 described above may provide varioustechnical features or advantages over previous systems. For example, theMAS 106 may more efficiently handle different portions of acommunication session by transferring the communication session betweenmedia processors 206. Also, the MAS 106 may more accurately determinewhether requested communication sessions should be accepted or rejectedusing the present communication session load and resources of the MAS106. Further, the MAS 106 may more efficiently process audio informationfrom various communication devices 102, which helps to reduce theprocessing load placed on the MAS 106. In addition, Media ApplicationServers 106 can be added more easily to a ring of servers 106 in acommunication system.

It may be advantageous to set forth definitions of certain words andphrases that have been used within this patent document. The terms“include” and “comprise,” as well as derivatives thereof, mean inclusionwithout limitation. The term “or” is inclusive, meaning and/or. Thephrases “associated with” and “associated therewith,” as well asderivatives thereof, may mean to include, be included within,interconnect with, contain, be contained within, connect to or with,couple to or with, be communicable with, cooperate with, interleave,juxtapose, be proximate to, be bound to or with, have, have a propertyof, or the like. The term “controller” means any device, system or partthereof that controls at least one operation. A controller may beimplemented in hardware, firmware, software, or some combination of atleast two of the same. The functionality associated with any particularcontroller may be centralized or distributed, whether locally orremotely.

While this disclosure has described certain embodiments and generallyassociated methods, alterations and permutations of these embodimentsand methods will be apparent to those skilled in the art. Accordingly,the above description of example embodiments does not define orconstrain this disclosure. Other changes, substitutions, and alterationsare also possible without departing from the spirit and scope of thisdisclosure, as defined by the following claims.

What is claimed is:
 1. A method for processing audio information of acommunication session, comprising: encoding elements of audioinformation using a codec; storing the encoded elements of audioinformation in memory; receiving a request for a specific element of thestored audio information; retrieving the requested specific element ofthe stored audio information from memory; and providing the retrievedelement of audio information to the communication session withoutencoding or decoding the retrieved element of audio information using acodec.
 2. The method of claim 1, further comprising: maintaining countsof requests for specific elements of stored audio information; cachingspecific elements of stored audio information in cache memory whencounts of requests for those specific elements exceed at least onethreshold; receiving further requests for those specific elements ofstored audio information; and retrieving those specific elements ofstored audio information from cache memory.
 3. The method of claim 2,wherein the specific elements of stored audio information comprise audioprompts and audio announcements.
 4. The method of claim 2, whereinplural versions of specific elements of audio information are stored,each version being encoded by a respective audio codec.
 5. An apparatusfor processing audio information of a communication session, comprising:at least one codec operable to encode elements of audio information; amemory operable to store the encoded elements of audio information; aprocessor operable to: receive a request for a specific element of thestored audio information; retrieve the requested specific element of thestored audio information from memory; and provide the retrieved elementof audio information to the communication session without encoding ordecoding the retrieved element of audio information using a codec. 6.The apparatus of claim 5, wherein the processor is further operable to:maintain counts of requests for specific elements of stored audioinformation; caching specific elements of stored audio information incache memory when counts of requests for those specific elements exceedat least one threshold; receive further requests for those specificelements of stored audio information; and retrieve those specificelements of stored audio information from cache memory.
 7. The apparatusof claim 5, wherein the specific elements of stored audio informationcomprise audio prompts and audio announcements.
 8. The apparatus ofclaim 5, wherein plural versions of specific elements of audioinformation are stored, each version being encoded by a respective audiocodec.